package com.superman.supermarket.client.widget.search;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.superman.mvpframe.client.dom.HasInputHandlers;
import com.superman.mvpframe.client.dom.InputEvent;
import com.superman.mvpframe.client.dom.InputHandler;
import com.superman.mvpframe.client.utils.StringUtils;

/**
 * 搜索框
 * 
 * @author superman
 * @version 2018年7月19日下午9:43:02
 */
public class SearchBox extends Composite implements HasClickHandlers, HasInputHandlers {

	interface SearchBoxUiBinder extends UiBinder<Widget, SearchBox> {
	}

	private static SearchBoxUiBinder uiBinder = GWT.create(SearchBoxUiBinder.class);

	@UiField
	TextBox input;

	/**
	 * 构造方法
	 * 
	 * @author superman
	 * @version 2018年7月19日 下午9:43:05
	 */
	public SearchBox() {
		initWidget(uiBinder.createAndBindUi(this));

	}

	@Override
	public HandlerRegistration addClickHandler(ClickHandler handler) {
		return input.addClickHandler(handler);
	}

	@Override
	public HandlerRegistration addInputHandler(InputHandler handler) {
		return input.addDomHandler(handler, InputEvent.getType());
	}

	/**
	 * 获取输入框的值
	 * 
	 * @author superman
	 * @version 2018年8月13日 下午10:39:13
	 * @return value
	 */
	public String getValue() {
		return this.input.getValue().trim();
	}

	/**
	 * 设置文本框的输入提示
	 * 
	 * @author superman
	 * @version 2018年7月19日 下午9:59:02
	 * @param placeHolder
	 */
	public void setPlaceHolder(String placeHolder) {
		if (!StringUtils.isEmpty(placeHolder))
			this.input.getElement().setAttribute("placeHolder", placeHolder);
	}

	/**
	 * 设置是否只读
	 * 
	 * @author superman
	 * @version 2018年8月13日 下午10:15:35
	 * @param readOnly
	 */
	public void setReadOnly(boolean readOnly) {
		this.input.setReadOnly(readOnly);
	}

	/**
	 * 设置默认值
	 * 
	 * @author superman
	 * @version 2018年7月19日 下午9:58:20
	 * @param value
	 */
	public void setValue(String value) {
		if (!StringUtils.isEmpty(value))
			this.input.setText(value);
	}

}
